<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // Map的作用就是做映射, 没有这个限制，可以对任意类型进行映射。
    // 把原数组映射（改变）成另外新数组
    // 利用map方法方便获得对象数组中的特定属性值们
    let obj = [
      { name: "小明", "email": "ming@email.com" },
      { name: "小红", "email": "hong@email.com" },
      { name: "小我也不知道", "email": "know@email.com" }]
    let emails = obj.map(
      function (obj) {
        return obj.email
      })
    console.log(emails.join(", "))//这个打印出来的是后面的邮箱号码

    // typeof返回的数据类型有6种，分别为：
    // 1、object，对象类型；
    // 2、undefined，未定义类型；
    // 3、string，字符串类型；
    // 4、number，数字类型；
    // 5、boolean，布尔类型；
    // 6、function，函数类型。

    function selfMap (arr, cb) {
      let arr1 = []
      // 核心逻辑
      // 遍历arr数组 针对于数组中的每一项都需要使用传入的cb函数处理一下，然后拔出力之后的结构push到arr
      // 这样便利完毕之后 爱人认证就存放的是处理之后的所有想
      for (let index = 0; index < arr.length; index++) {
        let result = cb(arr[index])
        arr1.push(result)
      }
      return arr1
    }
    const arr = [5, 6, 7]
    const a = selfMap(arr, (item) => {
      return item * 2
    })
    console.log(a);
  </script>
</body>

</html>